These disk images contain the Apple II type-in programs from Compute! Magazine, Issues 76-80. The programs included are listed below. All programs are both DOS and ProDOS unless indicated with [D] for DOS-only or [P] for ProDOS-only.

#76: Beehive, Jacket Lister, PowerKey for Apple
#77: Prisonball, Turbodisk for DOS 3.3 [D]
#78: EDIT for Apple II [D]
#79: Laser Strike, Apple Math Graphics
#80: Chain Reaction, Printer Master, Apple DOS 3.3 Wildcards [D]
plus Proofreader and MLX

For more documentation, instructions, and commentary, read on!

============================
  Compute Type-In Programs

        Issues 76-80
September 1986- January 1987
============================

COMPUTE! magazine is a classic computing magazine which, in its heyday, published a variety of type-in programs for the Commodore 64/128, Apple II, Atari 400/800, IBM PC, and other 8-bit platforms. Typically each month's issue would feature a game, which was available on most of the supported platforms, and a variety of utilities. I recently discovered that archive.org has scans of all of the COMPUTE! back issues and decided to type in the programs there.

These disk images contain all of the Apple II type-in programs for five issues (76-80). There are two, one DOS 3.3 disk and one ProDOS 1.1.1 disk. These are mostly identical, although there are a few programs which only work under one OS or the other, and so are omitted from the other disk. On the ProDOS disk, I've also sorted the separate issues into their own subdirectories. Filenames may also be slightly different between the DOS 3.3 and ProDOS versions due to the stricter ProDOS naming restrictions.

Each disk includes a menu program which will allow you to select and run the main programs of interest. However, each disk includes many files which are not designed to be run directly (for instance, binary files loaded in by another program, or BASIC files which exist only to make binary files). This listing includes information on all programs on the disk.

I've also included, for each program, a very brief summary of its function and how to use it, but for full details, please consult the original article.

Why am I typing in these nearly 30-year-old programs? Well, it's mostly because I enjoyed doing this as a kid, and I'd like to make sure that these are preserved for the future.

Note that I created these disks using an emulator (mostly AppleWin, although I also tried using MESS for some checks). If you're not lucky enough to still have a functional Apple II around, you'll also need an emulator -- I recommend AppleWin for Windows users, and have heard good things about Virtual ][ for Macs.
 -- Paul Lujan, September 2014

==================
Programs and Notes
==================

First there is HELLO (STARTUP for ProDOS), which is the main menu program.

The next two programs are PROOFREADER and MLX, which were included in most COMPUTE! issues.

PROOFREADER is the Automatic Proofreader, which was included in all COMPUTE! issues starting with #62. It displays a checksum whenever you type in a BASIC line, which can be compared with the printed value to check that you had entered it correctly.

MLX is the Apple machine language entry program, which allowed you to conveniently enter ML listings in hexadecimal form. The printed listings included an extra checksum byte, which the program would check against the computed checksum to make sure the line had been entered correctly. Note that the version here is not quite the one printed in the magazine -- see the detailed notes at the end.

-------------------------
Issue 76 (September 1986)
-------------------------
archive.org link: https://archive.org/details/1986-09-compute-magazine

This contains the following programs:

* p. 31: Beehive, by Steve Michel; Apple II version by Tim Victor (DOS and ProDOS)
  https://archive.org/stream/1986-09-compute-magazine/Compute_Issue_076_1986_Sep#page/n31/mode/2up

Beehive is a two-player strategy game, where the object is to connect your two sides with a continuous line (either top and bottom or left and right). Use the joystick to move and the button to select a square. RUN BEEHIVE to play.

* p. 52: Jacket Lister, by Gregory Jackmond; Apple II version by Tim Midkiff (DOS and ProDOS)
  https://archive.org/stream/1986-09-compute-magazine/Compute_Issue_076_1986_Sep#page/n53/mode/2up
[includes corrections from CAPUTE! in Issue #79: see https://archive.org/stream/1986-12-compute-magazine/Compute_Issue_079_1986_Dec#page/n93/mode/2up]

This is a utility to create a disk jacket with an alphabetized catalog of all the programs on the disk. It will always send its output to the printer, so make sure that your emulator is set up to handle that. RUN JACKET LISTER (or JACKET.LISTER in ProDOS) to try it.

* p. 65: PowerKey for Apple, by Patrick Parrish (DOS and ProDOS)
  https://archive.org/stream/1986-09-compute-magazine/Compute_Issue_076_1986_Sep#page/n65/mode/2up
[includes corrections from CAPUTE! in Issue #78: see https://archive.org/stream/1986-11-compute-magazine/Compute_Issue_078_1986_Nov#page/n89/mode/2up]

This is a powerful utility which allows you to define Open Apple+key and Closed Apple+key combinations to automatically insert a word or phrase. RUN POWERKEY.SYSTEM to load a keyword table (TABLE is included as the default table) and start PowerKey, or RUN POWERKEY.CUSTOM to edit the keyword table. In addition to these three files, there is also POWERKEY.LOADER, which creates the binary file used for PowerKey, and POWERKEY.BINARY, which is that binary file.

Note that PowerKey was apparently originally named OmniKey, as the programs generally use that name instead.

* The reader feedback section (p. 16-17) contains some code and a discussion on determining the cursor position in 80-column mode, which may be a helpful reference:
https://archive.org/stream/1986-09-compute-magazine/Compute_Issue_076_1986_Sep#page/n19/mode/2up

-----------------------
Issue 77 (October 1986)
-----------------------
archive.org link: https://archive.org/details/1986-10-compute-magazine

This contains the following programs:

* p. 38: Prisonball, by John Scarborough; Apple II version by Tim Victor (DOS and ProDOS)
  https://archive.org/stream/1986-10-compute-magazine/Compute_Issue_077_1986_Oct#page/n39/mode/2up

Prisonball is a two-player arcade game which combines elements of Pong and Breakout. BRUN PRISONBALL to play. Use the paddles to control the two players, and press any key to pause.

Note that I have been unable to get Prisonball to work correctly under emulation. See the discussion below for more details.

* p. 83: Turbodisk for DOS 3.3, by R. Ellerbrock (DOS only)
  https://archive.org/stream/1986-10-compute-magazine/Compute_Issue_077_1986_Oct#page/n83/mode/2up

This utility installs new routines to speed up your copy of DOS 3.3. BRUN TURBODISK and follow the instructions to install it on a disk. Note that this disables the INIT command, so you'll need to boot with a normal copy of DOS in order to INIT again. Obviously, under emulation, this may not be a useful utility.

* The reader feedback section (p. 14-15) contains some discussion on renumbering and merging programs; although this is best done with the Apple Programmer's Assistant, it also demonstrates a simple technique for merging without any external programs.
https://archive.org/stream/1986-10-compute-magazine/Compute_Issue_077_1986_Oct#page/n15/mode/2up

------------------------
Issue 78 (November 1986)
------------------------
archive.org link: https://archive.org/details/1986-11-compute-magazine

The featured game in this issue, Biker Dave, does not have an Apple II version provided, so there is only one program in this issue. However, there is an Apple II version of Biker Dave on the Compute Best of Apple disk, available in the Asimov archive. This appears to have come from Compute's Apple Applications, Spring/Summer 1987 (Vol 5., Issue 5), also available on the Asimov archive.

* p. 75: EDIT for Apple II, by E. Joseph Billo and Richard A. DeJordy (DOS only)
  https://archive.org/stream/1986-11-compute-magazine/Compute_Issue_078_1986_Nov#page/n73/mode/2up

This utility adds a new DOS command, EDIT, which provides a better way to edit an existing line. RUN EDIT.LOADER to install it (the article suggests that you put it in your HELLO program, but I've just left it as a standalone here) and then use EDIT <linenumber> to invoke it.

* The reader feedback section (p. 12) contains some elementary information on BSAVE, BLOAD, and BRUN and how they work.
https://archive.org/stream/1986-11-compute-magazine/Compute_Issue_078_1986_Nov#page/n13/mode/2up

------------------------
Issue 79 (December 1986)
------------------------
archive.org link: https://archive.org/details/1986-12-compute-magazine

This issue contains the following programs:

* p. 44: Laser Strike, by Barbara Schulak; Apple II version by Tim Midkiff (DOS and ProDOS)
  https://archive.org/stream/1986-12-compute-magazine/Compute_Issue_079_1986_Dec#page/n45/mode/2up

Laser Strike is a one- or two-player game which is essentially a clone of Battleship. RUN LASER STRIKE (LASER.STRIKE in ProDOS) to play. Use the cursor keys to move and the spacebar to fire. To have the computer play one or both sides, leave the name blank when you are prompted for the player name.

There is a correction to this program in CAPUTE! Issue #81, but the correction is not quite correct either (the program runs fine in both cases, just more slowly). I've put in a better fix which speeds up the program. See the notes below for more details.

* p. 86: Apple Math Graphics, by Warren Block (DOS and ProDOS)
  https://archive.org/stream/1986-12-compute-magazine/Compute_Issue_079_1986_Dec#page/n85/mode/2up

This is a graphics demo which shows off a variety of different graphics tricks that can be done with a single line of BASIC. RUN MATH GRAPHICS (or MATH.GRAPHICS in ProDOS) to see.

* The reader feedback section (p. 20) includes a discussion of how colors work in Apple hi-res mode; while this is probably familiar to anyone with experience in Apple hi-res graphics, here is the reference:
https://archive.org/stream/1986-12-compute-magazine/Compute_Issue_079_1986_Dec#page/n21/mode/2up

-----------------------
Issue 80 (January 1987)
-----------------------
archive.org link: https://archive.org/details/1987-01-compute-magazine

This issue contains the following programs:

* p. 47: Chain Reaction, by Mark Tuttle; Apple II version by Tim Midkiff (DOS and ProDOS)
  https://archive.org/stream/1987-01-compute-magazine/Compute_Issue_080_1987_Jan#page/n45/mode/2up

Chain Reaction is a one- or two-player strategy game. RUN CHAIN REACTION (CHAIN.REACTION in ProDOS) to play. Use IJKM to move the cursor and the space bar to plant a bomb. 

* p. 67: Printer Master, by David Stanton (DOS and ProDOS)
  https://archive.org/stream/1987-01-compute-magazine/Compute_Issue_080_1987_Jan#page/n67/mode/2up

This is a simple utility which will automatically send the proper control codes to your printer to select output types. RUN PRINTER MASTER (PRINTER.MASTER in ProDOS) to use it. Note that if you try to select a feature not supported by the printer you chose, nothing will change on the status display screen.

* p. 73: Apple DOS 3.3 Wildcards, by Mark Russinovich (DOS only)
  https://archive.org/stream/1987-01-compute-magazine/Compute_Issue_080_1987_Jan#page/n73/mode/2up

This utility will add the wildcards * and ? to DOS. * will match any number of characters (but only at the end of the filename), while ? will match any single character. BRUN WILDCARD to install it. (Note that this will disable your INIT command.) The other file, WILDCARD.MAKE, is simply a BASIC program to create the machine-language file.

===================
Corrections & Notes
===================

While I've generally tried to match the printed listings exactly (including later corrections when appropriate), there are a few cases where I've made a few corrections of my own.

* In the first version of MLX (introduced in issue #61 with SpeedScript for Apple II), the line which saves the binary file (line 200) contains a bug: the length is calculated as (end - start) rather than the correct (end - start + 1). In most MLX programs this is harmless, since the last few bytes are just padding to make the program length an even multiple of 8. However, there are some cases where this causes problems. This was fixed in issue #88 (the first issue where MLX included Proofreader checksums), without any notice that anything had changed. Then, in issue #93 (just three issues before COMPUTE! ended type-in programs entirely), the version of MLX changed to "MLX V1.1". This introduced occasional garbage collection (which presumably helped out in very long typing sessions), but re-introduced the length bug!

So, the version here is a version which was never actually printed -- it combines the bug fix in the issue #88 version with the improvements in V1.1, so I've labeled it as V1.2.

* Prisonball (#77) does not run correctly under any emulator I've found. The article notes: "The Apple II version of Prisonball uses a special technique to put a text window at the top of the lo-res screen. You may need to remove the parallel printer interface from your computer in order to make this work." In AppleWin (where, as far as I can tell, you can't remove the printer interface), the game stays in text mode, which makes it marginally playable. In other emulators that I've tried (e.g. MESS), the game stays in lo-res mode, the text is corrupted, and the game hangs (regardless of whether I have a emulated parallel card in slot #1 or not).

* TurboDisk (#77) works under emulation in the sense that it doesn't crash, but in most cases it doesn't actually do anything. The article says that it works by changing the way the arm moves, which presumably is lower level than most emulators go. Under MESS, which does have very faithful emulation of the Apple II drive, I have noticed that there is a speed boost.

* I've made a few minor corrections to Laser Strike (#79). First, in lines 1210-1220:
1210 IF X < 0 OR X > 9 THEN ER = 1
1220 IF Y < 0 OR X > 9 THEN ER = 1	
The X in line 1220 should clearly be Y. This doesn't actually affect the game since I don't think there's a way to generate an out-of-bounds number here anyway, but I've fixed it.

The more major correction is in lines 700-710. This subroutine draws the grid initially and clears it after the ships have been placed. The original text reads:
700 CO = 0: FOR X = 0 TO 9: FOR Y = 0 TO 9: IF C(P,X,Y) < > 0 THEN
710 GOSUB 720: NEXT Y,X: RETURN

The CAPUTE! in Issue #81 (see https://archive.org/stream/1987-02-compute-magazine/Compute_Issue_081_1987_Feb#page/n75/mode/2up ) has the following correction:
"Line 700 of the Apple version of this game from the December 1986 issue (Program 2, p. 52) ends with an incomplete statement--there is nothing following the THEN. The IF statement was never executed during our extensive testing of the game, so this should not cause a problem. However, you may want to delete the bad statement. Remove everything in that line following (and including) the last colon."

This statement is wrong -- the IF statement is indeed executed, but having an empty THEN clause is perfectly valid in Applesoft BASIC (try it yourself!), so nothing bad happens. If you remove the IF statement (or simply leave it in), the program works fine, but it redraws every single white square when clearing the grid, even if the square is already white. This slows down the program considerably. Of course, you do need to draw every square when first drawing the grid, so I take advantage of the fact that the ship placement loop is the first place to use N and write:
700 CO = 0: FOR X = 0 TO 9: FOR Y = 0 TO 9: IF C(P,X,Y) < > 0 OR N = 0 THEN GOSUB 720
710 NEXT Y,X: RETURN

This makes the grid-clearing much faster.

* Apple Math Graphics (#79) appears to be missing a 100 TEXT: HOME (since it needs it, and the listing begins at line 110, which suggests that some line 100 was left out), so I've added that in.

===========
Other Disks
===========

There are a couple of other disks on the Asimov archive which also contain some of these programs: the Compute Best of Apple disk has Prisonball, Laser Strike, Chain Reaction, and Printer Master. I ran a quick diff to ensure that these were the same, and they all were identical (except for the last byte in Prisonball, presumably due to the MLX bug discussed above).